Просмотр полной версии : Как определить загрузилось ли изображение
Здравствуйте!
Как определить с помощью jquery окончание загрузки изображения ?
$(image).bind('load', handler);
exec,
У меня url подгружается через ajax, нужно запустить анимацию появления после загрузки изображения
Как в этом случае определить ?
$.ajax({
type: "POST",
url: "/rand_header.php",
data: "userHour="+myHour,
success: function(pic){
$('#header').css('backgroundImage', 'url('+pic+')');
$('#header').animate({'opacity':'1'}, 230);
}
});
Andrei, background нельзя анимаировать через animate.
$.ajax({
type: "POST",
url: "/rand_header.php",
data: "userHour="+myHour,
success: function(pic){
$('#header').append('<img style="opacity: 0;" src="' + pic + '" />').bind('load', function () {
$(this).fadeIn();
});
}
});
exec, Я анимирую DIV с background
exec, a если так ?
$.ajax({
type: "POST",
url: "/rand_header.php",
data: "userHour="+myHour,
success: function(pic){
myImage = new Image();
function write(){
$('#header').css('backgroundImage', 'url('+myImage.src+')');
$('#header').animate({'opacity':'1'}, 230);
}
myImage.onload = write;
myImage.src = '/themes/images'+pic;
}
});
Ну тогда лучше так
$.ajax({
type: "POST",
url: "/rand_header.php",
data: "userHour="+myHour,
success: function(pic){
$('<img src="' + pic + '" />').bind('load', function () {
$('#header').css('backgroundImage', this.src).fadeIn(230);
});
});
}
});
Работает, спасибо!
С fadeIn почему-то не работало, я заменил на animate
Способ .load не работает в Opera 10.
Если изображение не в кеше.
var img = new Image();
img.onload = function() { alert('load'); };
img.src = 'http://javascript.ru/forum/images/ca_serenity/misc/logo.gif';
Обновляю страницу -- всё работает.
$("img").each( function() {
$(this).bind('load', function () {
alert('load');
});
});
А так?
Ну можно данный код на onload повесить, чтобы уж наверняка все изображения на этот момент загружены были.
С парой сотен изображений такой подход не больно оправдан :)
Weeee,
это был сарказм. Вы вешаете обработчик на событие, которое уже произошло. Что вы хотите получить? Если уж сильно хочется именно такой код, то проверяйте свойство complete у изображений.
Я его, естествено, тоже проверяю, в опере все равно не работает :)
if (this.complete) {
$(this).trigger('load');
}
Это уже не смешно даже.
$(img").each( function() {
$(this).bind('load', function () {
alert('bind');
});
if (this.complete){
alert('trig');
$(this).trigger('load');
}
});
В опере ни одного сообщения не появляется.
if (this.complete){
alert('hello1');
} else $(this).bind('load', function(){
alert('hello2');
});
Если изображения поместить в блок со своейством display: none;, то Opera 10 показывается hello2. Если же убрать display: none;, то мы увидим только hello1.
А если изображение уже было в кеше, то вообще никакого сообщения мы не увидим!
Короче говоря, как я и говорил, не работает.
var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
if (imgs[i].complete) {
alert('loaded');
} else {
imgs[i].onload = function() {
alert('loaded');
}
}
}
Всё работает.
а так? ....
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body> <div id='img_hide' style="display: none"></div>
<script language="JavaScript" type="text/javascript">
function img_load() {
for (var b = document.getElementById("img_hide"), d = arguments.length, c = 0; c < arguments.length; c++) {
var a = new Image;
a.onload = function () {
b.appendChild(this);
if (b.childNodes.length == d) {
b.style.display = ""
}
};
a.onerror = function () {
var e = document.createTextNode(this.src + " \u043d\u0435\u0442 ");
b.appendChild(e);
if (b.childNodes.length == d) {
b.style.display = ""
}
};
a.src = arguments[c];
(a.fileSize !== undefined ? a.fileSize > -1 : a.width) && a.onload()
}
};
img_load('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif','logo.gif','http://javascript.ru/forum/images/ca_serenity/misc/logo.gif')
</script>
</body>
</html>
Опера, кстати, меня что-то с ветки 10.50 не радует.
Не по-норвежски как-то они браузер начали делать.
а как можно проверить подгрузилось изображение или нет из css ?)
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot